/**
 * 会议报名项目相关API
 */

const api = require('../utils/api')

/**
 * 获取会议的所有报名项目
 * @param {number} activityId - 会议ID
 */
function getActivityItems(activityId) {
  return api.get(`/activities/${activityId}/items`)
}

/**
 * 报名参加某个项目
 * @param {number} activityId - 会议ID
 * @param {number} itemId - 项目ID
 * @param {object} data - 报名数据 {name, introduction, photo_url, speech_intro}
 */
function registerForItem(activityId, itemId, data) {
  return api.post(`/activities/${activityId}/items/${itemId}/register`, data)
}

/**
 * 取消报名
 * @param {number} activityId - 会议ID
 * @param {number} itemId - 项目ID
 * @param {number} registrationId - 报名记录ID
 */
function cancelRegistration(activityId, itemId, registrationId) {
  return api.del(`/activities/${activityId}/items/${itemId}/register/${registrationId}`)
}

/**
 * 创建新的报名项目（仅管理员）
 * @param {number} activityId - 会议ID
 * @param {object} data - 项目数据 {name, description}
 */
function createItem(activityId, data) {
  return api.post(`/activities/${activityId}/items/create`, data)
}

/**
 * 更新报名项目（仅管理员）
 * @param {number} activityId - 会议ID
 * @param {number} itemId - 项目ID
 * @param {object} data - 更新数据 {name, description, sequence}
 */
function updateItem(activityId, itemId, data) {
  return api.put(`/activities/${activityId}/items/${itemId}`, data)
}

/**
 * 删除报名项目（仅管理员，且无人报名时）
 * @param {number} activityId - 会议ID
 * @param {number} itemId - 项目ID
 */
function deleteItem(activityId, itemId) {
  return api.del(`/activities/${activityId}/items/${itemId}`)  // 使用 del 而不是 delete（JS保留字）
}

/**
 * 获取某个项目的所有报名记录（仅管理员）
 * @param {number} activityId - 会议ID
 * @param {number} itemId - 项目ID
 */
function getItemRegistrations(activityId, itemId) {
  return api.get(`/activities/${activityId}/items/${itemId}/registrations`)
}

/**
 * 获取当前用户的所有报名记录
 */
function getUserRegistrations() {
  return api.get('/user/registrations')
}

module.exports = {
  getActivityItems,
  registerForItem,
  cancelRegistration,
  getItemRegistrations,
  getUserRegistrations,
  createItem,
  updateItem,
  deleteItem
}

